package base.ioput;

//将C盘一个文本文件复制到D盘。

/*
复制的原理：
其实就是将C盘下的文件数据存储到D盘的一个文件中。

步骤：
1，在D盘创建一个文件。用于存储C盘文件中的数据。
2，定义读取流和C盘文件关联。
3，通过不断的读写完成数据存储。
4，关闭资源。
*/


import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

class CopyText {
    public static void main(String[] args) throws IOException {
        copy_2();
    }


    public static void copy_2() {
        FileWriter fw = null;
        FileReader fr = null;
        try {
            fw = new FileWriter("SystemDemo_copy.txt");
            fr = new FileReader("SystemDemo.java");

            char[] buf = new char[1024];//字符组在这里起到缓存的作用

            int len = 0;
            while ((len = fr.read(buf)) != -1)//fr被读取，因为fr相当于源文件
            {
                fw.write(buf, 0, len);//写入到fw，然后才能刷出到指定的目的地
            }
        } catch (IOException e) {
            throw new RuntimeException("读写失败");

        } finally {
            if (fr != null)
                try {
                    fr.close();
                } catch (IOException e) {
                }
            if (fw != null)
                try {
                    fw.close();
                } catch (IOException e) {
                }
        }
    }

    //从C盘读一个字符，就往D盘写一个字符。
    public static void copy_1() throws IOException {
        //创建目的地。
        FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");

        //与已有文件关联。
        FileReader fr = new FileReader("RuntimeDemo.java");

        int ch = 0;

        while ((ch = fr.read()) != -1) {
            fw.write(ch);//要有write对象的存在（曾错过）
        }

        fw.close();
        fr.close();

    }


}

